package main

import (
	"encoding/json"
	"flag"
	"fmt"
	"net"
	"regexp"
	"strings"
)

func init() {
	flag.Usage = func() {
		println(`播放剪贴板中的文本，这个程序需要配合我编写的安卓TTS（语音合成）服务器tts_server使用，两者必须在同一网络中运行（使用手机或者安卓模拟器运行tts_server）。
命令格式为：
./text2audio [-addr ServerIP]
参数说明：
	-addr: 服务器地址，IP地址可以从安卓的设置界面查看，（默认值：192.168.240.112，waydroid模拟器通常是这个地址），如果使用xdroid模拟器,通常是192.168.252.11。
		`)
	}
}

func playText(text, serverAddr string) error {
	conn, err := net.Dial("tcp", serverAddr+":9800")
	if err != nil {
		return err
	}
	defer conn.Close()

	length := len(text)

	conn.Write([]byte(fmt.Sprintf("%8d", length)))
	conn.Write([]byte(text))

	data := []byte{}
	decoder := json.NewDecoder(conn)

	err = decoder.Decode(&data)

	return err
}

func splitText(text string) []string {
	text = strings.Replace(text, "\n", ".", -1)
	var r1 = regexp.MustCompile("[，。！？；：”’,.:!?;\"']+")
	res := r1.FindAllStringIndex(text, -1)
	if res == nil {
		return []string{text}
	}
	const limit = 120
	var ret1 = []string{}
	var start = 0
	//fmt.Printf("%#v\n", res)
	for _, idx := range res {
		ret1 = append(ret1, strings.TrimSpace(text[start:idx[1]]))
		start = idx[1]
	}
	if start < len(text) {
		ret1 = append(ret1, strings.TrimSpace(text[start:]))
	}
	var ret = []string{}
	start = 0
	for i, _ := range ret1 {
		s := strings.Join(ret1[start:i+1], "")
		if len(s) > limit {
			if i > start {
				ret = append(ret, strings.Join(ret1[start:i], ""))
				start = i
			} else {
				ret = append(ret, s)
				start = i + 1
			}
		}
	}
	if start <= len(ret1) {
		ret = append(ret, strings.Join(ret1[start:len(ret1)], ""))
	}
	return ret
}
